package com.wtpaint.leetcode.查找表;

import java.util.*;

/**
 * 349 给定两个数组，编写一个函数来计算它们的交集。
 * <p>
 * 示例 1:
 * <p>
 * 输入: nums1 = [1,2,2,1], nums2 = [2,2]
 * 输出: [2]
 * <p>
 * 示例 2:
 * <p>
 * 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
 * 输出: [9,4]
 * <p>
 * 说明:
 * <p>
 * 输出结果中的每个元素一定是唯一的。
 * 我们可以不考虑输出结果的顺序。
 */
public class Intersection {

    public static int[] intersection(int[] nums1, int[] nums2) {
        Set<Integer> nums1Set = new TreeSet<>();
        for (int aNums1 : nums1) {
            nums1Set.add(aNums1);
        }

        Set<Integer> resultSet = new TreeSet<>();
        for (int aNums2 : nums2) {
            if (nums1Set.contains(aNums2)) {
                resultSet.add(aNums2);
            }
        }
        int[] re = new int[resultSet.size()];
        int index = 0;
        for (Integer num : resultSet) {
            re[index++] = num;
        }

        return re;

    }

    public static void main(String[] args) {
        int[] nums1 = new int[]{4,9,5};
        int[] nums2 = new int[]{9,4,9,8,4};
        int[] intersection = intersection(nums1,nums2);
        for (int i : intersection) {
            System.out.println(" " + i);
        }

    }


}
